﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using ENLibraryClass;

namespace uacars
{
    public partial class frmEmpleados : Form
    {
        string auxCargo;
        string auxLogin;
        string auxPass;

        string tipobus;
        public frmPedidos ped = null;
        public frmCitas pedC = null;

        //FUNCIONES

        public bool ValidarCampos()
        {
            bool aux = true;
            errorProvider.Clear();

            if (maskedTextBoxDNI.Text.Length < 8)
            {
                errorProvider.SetError(maskedTextBoxDNI, "El DNI debe contener 8 dígitos.");
                aux = false;
            }
            if (maskedTextBoxTelefono.Text.Length < 9)
            {
                errorProvider.SetError(maskedTextBoxTelefono, "El teléfono debe contener 9 dígitos.");
                aux = false;
            }
            if (maskedTextBoxCodigo.Text.Length < 5)
            {
                errorProvider.SetError(maskedTextBoxCodigo, "El código postal debe contener 5 dígitos.");
                aux = false;
            }


            if (!Regex.Match(textEmail.Text, @"^(\D|\d)+@{1}(\D|\d)+\.([a-z]|[A-Z])+$").Success)
            {
                errorProvider.SetError(textEmail, "Email incorrecto.\nDebe tener el siguiente formato: ejemplo@ejemplo.com");
                aux = false;
            }
            if (!Regex.Match(textNombre.Text, @"^([a-z]|[A-Z]|\s)+$").Success)
            {
                errorProvider.SetError(textNombre, "El nombre sólo puede estar formado por caracteres.");
                aux = false;
            }
            if (!Regex.Match(textApellido1.Text, @"^([a-z]|[A-Z]|\s)+$").Success)
            {
                errorProvider.SetError(textApellido1, "El primer apellido sólo puede estar formado por caracteres.");
                aux = false;
            }
            if (!Regex.Match(textApellido2.Text, @"^([a-z]|[A-Z]|\s)+$").Success)
            {
                errorProvider.SetError(textApellido2, "El segundo apellido sólo puede estar formado por caracteres.");
                aux = false;
            }
            if (!Regex.Match(textPoblacion.Text, @"^([a-z]|[A-Z]|\s)+$").Success)
            {
                errorProvider.SetError(textPoblacion, "La población sólo puede estar formada por caracteres.");
                aux = false;
            }
            if (!Regex.Match(textSueldo.Text, @"(\d+(,{1}\d+)?)$").Success)
            {
                errorProvider.SetError(textSueldo, "Debe especificarse una cantidad.\n No puede contener caracteres.");
                aux = false;
            }
            if (dateTimePickerFechaAlta.Checked == false)
            {
                errorProvider.SetError(dateTimePickerFechaAlta, "Debe habilitar la fecha de Alta.");
                aux = false;
            }

            if (aux == false)
            {
                toolStripLabel.Text = "Error en 1 o más campos";
            }

            return aux;
        }

        public bool AlgunoRelleno()
        {
            bool aux = false;
            if (maskedTextBoxDNI.Text.Length > 0 || textNombre.Text.Length > 0 || textApellido1.Text.Length > 0 || textApellido2.Text.Length > 0 || maskedTextBoxTelefono.Text.Length > 0 || textEmail.Text.Length > 0 || textDireccion.Text.Length > 0 || textPoblacion.Text.Length > 0 || comboProvincia.Text.Length > 0 || maskedTextBoxCodigo.Text.Length > 0 || comboCargo.Text.Length > 0 || textSueldo.Text.Length > 0 || dateTimePickerFechaAlta.Checked==true || textLogin.Text.Length>0 || textPassword.Text.Length>0)
            {
                aux = true;
            }

            return aux;
        }

        public bool CamposRellenos()
        {
            bool aux = false;
            if (maskedTextBoxDNI.Text.Length > 0 && textNombre.Text.Length > 0 && textApellido1.Text.Length > 0 && textApellido2.Text.Length > 0 && maskedTextBoxTelefono.Text.Length > 0 && textEmail.Text.Length > 0 && textDireccion.Text.Length > 0 && textPoblacion.Text.Length > 0 && comboProvincia.Text.Length > 0 && maskedTextBoxCodigo.Text.Length > 0 && comboCargo.Text.Length > 0 && textSueldo.Text.Length > 0 && dateTimePickerFechaAlta.Checked == true && textLogin.Text.Length > 0 && textPassword.Text.Length > 0)
            {
                aux = true;
            }

            return aux;
        }

        public frmEmpleados()
        {
            InitializeComponent();

            btnOk.Enabled = false;
            btnCancel.Enabled = false;
        }

        public frmEmpleados(string pCargo,string usu, string pass)
        {
            InitializeComponent();

            btnOk.Enabled = false;
            btnCancel.Enabled = false;

            auxCargo = pCargo;
            auxLogin = usu;
            auxPass = pass;
        }

        public frmEmpleados(string algo)
        {
            tipobus = algo;
            InitializeComponent();
            buttonNuevo.Visible = false;
            buttonNuevo.Enabled = false;
            buttonModificar.Enabled = false;
            buttonModificar.Visible = false;
            buttonBorrar.Enabled = false;
            buttonBorrar.Visible = false;
            groupBoxUsuario.Visible = false;

            btnOk.Enabled = true;
            btnOk.Visible = true;

            //****************AÑADIR EL CARGO EN LAS LLAMADAS
            //auxCargo = pCargo;
        }

        private bool CargoAlto()
        {
            bool aux=false;
            if (auxCargo == "Administrador" || auxCargo == "Directivo")
                aux = true;

            return aux;
        }

        private void maskedTextBoxDNI_TextChanged_1(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }
        
        private void textNombre_TextChanged(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;

        }

        private void textApellido1_TextChanged(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void textApellido2_TextChanged(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void textDireccion_TextChanged(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void textPoblacion_TextChanged(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void comboProvincia_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void maskedTextBoxCodigo_TextChanged(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void comboCargo_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void textSueldo_TextChanged(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void maskedTextBoxTelefono_TextChanged_1(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void maskedTextBoxCodigo_TextChanged_1(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void textEmail_TextChanged_1(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void textLogin_TextChanged(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void textPassword_TextChanged(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void dateTimePickerFechaAlta_MouseDown(object sender, MouseEventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void dateTimePickerFechaAlta_ValueChanged(object sender, EventArgs e)
        {
            //Activar Nuevo
            if (CamposRellenos() && CargoAlto())
                buttonNuevo.Enabled = true;
            else
                buttonNuevo.Enabled = false;
        }

        private void buttonLimpiar_Click(object sender, EventArgs e)
        {
            LimpiarCampos();
        }

        private void buttonNuevo_Click(object sender, EventArgs e)
        {
            if (ValidarCampos())
            {
                try
                {
                    ENIdSiguiente idsiguiente = new ENIdSiguiente("empleados", 0);
                    int idEmpleado = idsiguiente.BuscarIdSiguiente();
                    ENEmpleados nuevo = new ENEmpleados(idEmpleado, maskedTextBoxDNI.Text, textNombre.Text, textApellido1.Text, textApellido2.Text, maskedTextBoxTelefono.Text, textEmail.Text, textDireccion.Text, textPoblacion.Text, comboProvincia.Text, maskedTextBoxCodigo.Text, comboCargo.Text, textSueldo.Text, dateTimePickerFechaAlta.Value.Date, textLogin.Text, textPassword.Text);

                    nuevo.AltaEmpleado();
                    labelID.Text = "";
                    toolStripLabel.Text = "Alta Realizada";


                    ficheros f = new ficheros();
                    f.EscribirLog(0, 1, maskedTextBoxDNI.Text.ToString());


                    idsiguiente.ActualizarIdSiguiente();

                    if (CargoAlto() == true)
                    {
                        dgvEmpleados.DataSource = nuevo.BuscarEmpleados();
                    }
                    else
                    {
                        dgvEmpleados.DataSource = nuevo.BuscarEmpleados2();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error al insertar Empleado. El DNI y/o el Login ya existen.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                }
            }
        }

        private void buttonBuscar_Click(object sender, EventArgs e)
        {
            
            //Primero se comprueba que haya alguno de los campos rellenos
            if (AlgunoRelleno())
            {
                try
                {
                    DataTable buscarpor = new DataTable();
                    if (dateTimePickerFechaAlta.Checked == false)
                    {
                        if (CargoAlto() == true)
                        {
                            ENEmpleados objetoAbuscar = new ENEmpleados(0, maskedTextBoxDNI.Text, textNombre.Text, textApellido1.Text, textApellido2.Text, maskedTextBoxTelefono.Text, textEmail.Text, textDireccion.Text, textPoblacion.Text, comboProvincia.Text, maskedTextBoxCodigo.Text, comboCargo.Text, textSueldo.Text, DateTime.Parse("01/01/1900"), textLogin.Text, textPassword.Text);
                            buscarpor = objetoAbuscar.BuscarEmpleadosPor();
                        }
                        else
                        {
                            ENEmpleados objetoAbuscar = new ENEmpleados(0, maskedTextBoxDNI.Text, textNombre.Text, textApellido1.Text, textApellido2.Text, maskedTextBoxTelefono.Text, textEmail.Text, textDireccion.Text, textPoblacion.Text, comboProvincia.Text, maskedTextBoxCodigo.Text, comboCargo.Text, textSueldo.Text, DateTime.Parse("01/01/1900"), "", "");
                            buscarpor = objetoAbuscar.BuscarEmpleadosPor();
                        }
                    }
                    else
                    {
                        if (CargoAlto() == true)
                        {
                            ENEmpleados objetoAbuscar = new ENEmpleados(0, maskedTextBoxDNI.Text, textNombre.Text, textApellido1.Text, textApellido2.Text, maskedTextBoxTelefono.Text, textEmail.Text, textDireccion.Text, textPoblacion.Text, comboProvincia.Text, maskedTextBoxCodigo.Text, comboCargo.Text, textSueldo.Text, dateTimePickerFechaAlta.Value.Date, textLogin.Text, textPassword.Text);
                            buscarpor = objetoAbuscar.BuscarEmpleadosPor();
                        }
                        else
                        {
                            ENEmpleados objetoAbuscar = new ENEmpleados(0, maskedTextBoxDNI.Text, textNombre.Text, textApellido1.Text, textApellido2.Text, maskedTextBoxTelefono.Text, textEmail.Text, textDireccion.Text, textPoblacion.Text, comboProvincia.Text, maskedTextBoxCodigo.Text, comboCargo.Text, textSueldo.Text, dateTimePickerFechaAlta.Value.Date, "", "");
                            buscarpor = objetoAbuscar.BuscarEmpleadosPor();
                        }
                    }

                    //Hay que diferenciar los dos tipos de buscar
                    dgvEmpleados.DataSource = buscarpor;
                    LimpiarCampos();
                    if (buscarpor.Rows.Count == 0)
                    {
                        toolStripLabel.Text = "Búsqueda Realizada - No se han encontrado resultados";
                    }
                    else
                    {
                        toolStripLabel.Text = "Búsqueda Realizada";
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error al buscar Empleado.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
                }
            }
            else //todos los campos vacíos
            {
                DataTable buscar = new DataTable();
                ENEmpleados objetoAbuscar = new ENEmpleados();

                //Hay que diferenciar los dos tipos de buscar
                if (CargoAlto() == true)
                {
                    buscar = objetoAbuscar.BuscarEmpleados();
                }
                else
                {
                    buscar = objetoAbuscar.BuscarEmpleados2();
                }
                dgvEmpleados.DataSource = buscar;
                LimpiarCampos();
                if (buscar.Rows.Count == 0)
                {
                    toolStripLabel.Text = "Búsqueda Realizada - No se han encontrado resultados";
                }
                else
                {
                    toolStripLabel.Text = "Búsqueda Realizada";
                }
            }
        }

        private void dgvEmpleados_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (CargoAlto())
            {
                buttonNuevo.Enabled = true;
            }
            dgvEmpleados.CurrentRow.Selected = true;
            
            labelID.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["id"].Value.ToString();
            maskedTextBoxDNI.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["nif"].Value.ToString();
            textNombre.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["nombre"].Value.ToString();
            textApellido1.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["apellido1"].Value.ToString();
            textApellido2.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["apellido2"].Value.ToString();
            textDireccion.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["direccion"].Value.ToString();
            textPoblacion.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["localidad"].Value.ToString();
            comboProvincia.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["provincia"].Value.ToString();
            if (CargoAlto() == true)
            {
                textLogin.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["login"].Value.ToString();
                textPassword.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["password"].Value.ToString();
            }
            comboCargo.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["cargo"].Value.ToString();
            textSueldo.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["sueldo"].Value.ToString();
            maskedTextBoxTelefono.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["telefono"].Value.ToString();
            maskedTextBoxCodigo.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["cp"].Value.ToString();
            textEmail.Text = dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["email"].Value.ToString();
            
            
            dateTimePickerFechaAlta.Value = (DateTime)(TypeDescriptor.GetConverter(new DateTime(1900, 5, 6)).ConvertFrom(dgvEmpleados.Rows[dgvEmpleados.CurrentCell.RowIndex].Cells["fechaalta"].Value.ToString()));
            
        }

        private void frmEmpleados_Load(object sender, EventArgs e)
        {

            ENEmpleados empleados = new ENEmpleados();
            DataTable dtEmpleados;
            if (CargoAlto() == true)
            {
                dtEmpleados = empleados.BuscarEmpleados();
            }
            else
            {
                dtEmpleados = empleados.BuscarEmpleados2();
            }

            dgvEmpleados.DataSource = dtEmpleados;

            ENProvincias provs = new ENProvincias();
            DataTable tabla = provs.BuscarProvincias();
            foreach (DataRow registro in tabla.Rows)
            {
                comboProvincia.Items.Add(registro["nombre"].ToString());
            }

            ENCargo cargs = new ENCargo();
            DataTable tabla2 = cargs.BuscarCargo();
            comboCargo.Items.Add("");
            foreach (DataRow registro in tabla2.Rows)
            {
                comboCargo.Items.Add(registro["nombre"].ToString());
            }

            if (auxCargo == "Oficina" || auxCargo == "Chofer" || auxCargo == "Vendedor")
            {
                groupBoxUsuario.Visible = false;
                groupBoxUsuario.Enabled = false;
            }

            if (dgvEmpleados.Columns.Count == 16)
            {
                dgvEmpleados.Columns[14].Visible = false;
                dgvEmpleados.Columns[15].Visible = false;
            }
        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            if (tipobus == "empleado")
            {
                if (labelID.Text != "" && labelID.Text != " " && comboCargo.Text != "Chofer")
                {
                    if (pedC == null)
                    {
                        ped.tbxEmpleado.Text = labelID.Text;
                        this.Close();
                    }
                    else
                    {
                        if (ped == null)
                        {
                            pedC.tbxEmpleado.Text = labelID.Text;
                            this.Close();
                        }
                    }

                }
                else
                    MessageBox.Show("Debe seleccionar un empleado que no sea Chofer.");
            }
            else
            {
                if (labelID.Text != "" && labelID.Text != " " && comboCargo.Text == "Chofer")
                {
                    ped.tbxChofer.Text = labelID.Text;
                    this.Close();

                }
                else
                    MessageBox.Show("Debe seleccionar un chofer.");
            }

        }

        private void labelID_TextChanged(object sender, EventArgs e)
        {
            if (labelID.Text != "")
            {
                if (CargoAlto() == false)
                {
                    if (auxCargo == "Oficina")
                    {
                        buttonModificar.Enabled = true;
                    }
                }
                else
                {
                    buttonModificar.Enabled = true;
                }

                if (auxCargo == "Directivo" || auxCargo == "Administrador")
                {
                    buttonBorrar.Enabled = true;
                }
            }
            else
            {
                buttonModificar.Enabled = false;
                buttonBorrar.Enabled = false; 
            }
        }


        public void LimpiarCampos()
        {
            labelID.Text = "";
            maskedTextBoxDNI.Text = "";
            maskedTextBoxCodigo.Text = "";
            maskedTextBoxTelefono.Text = "";
            textNombre.Text = "";
            textApellido1.Text = "";
            textApellido2.Text = "";
            comboProvincia.Text = "";
            textPoblacion.Text = "";
            textDireccion.Text = "";
            dateTimePickerFechaAlta.Value = DateTime.Now;
            textEmail.Text = "";
            comboCargo.Text = "";
            textSueldo.Text = "";
            textLogin.Text = "";
            textPassword.Text = "";

            dateTimePickerFechaAlta.Checked = false;
            toolStripLabel.Text = "";
            errorProvider.Clear();
        }


        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void buttonModificar_Click_1(object sender, EventArgs e)
        {
            if (ValidarCampos())
            {
                try
                {
                    ENEmpleados actualizado;
                    if (CargoAlto() == true)
                    {
                        actualizado = new ENEmpleados(int.Parse(labelID.Text), maskedTextBoxDNI.Text, textNombre.Text, textApellido1.Text, textApellido2.Text, maskedTextBoxTelefono.Text, textEmail.Text, textDireccion.Text, textPoblacion.Text, comboProvincia.Text, maskedTextBoxCodigo.Text, comboCargo.Text, textSueldo.Text, dateTimePickerFechaAlta.Value.Date, textLogin.Text, textPassword.Text);
                    }
                    else
                    {
                        actualizado = new ENEmpleados(int.Parse(labelID.Text), maskedTextBoxDNI.Text, textNombre.Text, textApellido1.Text, textApellido2.Text, maskedTextBoxTelefono.Text, textEmail.Text, textDireccion.Text, textPoblacion.Text, comboProvincia.Text, maskedTextBoxCodigo.Text, comboCargo.Text, textSueldo.Text, dateTimePickerFechaAlta.Value.Date, "", "");
                    }

                    actualizado.ModificarEmpleado();

                    dgvEmpleados.DataSource = actualizado.BuscarEmpleados();
                    toolStripLabel.Text = "Modificación Realizada";

                    ficheros f = new ficheros();
                    f.EscribirLog(2, 1, maskedTextBoxDNI.Text.ToString());

                    labelID.Text = "";
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error al modificar Empleado. Este empleado no existe.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                }
            }
        }

        private void buttonBorrar_Click_1(object sender, EventArgs e)
        {
            if (auxCargo == "Administrador" || auxCargo == "Directivo")
            {
                errorProvider.Clear();
                try
                {
                    if (MessageBox.Show("¿Desea eliminar el Empleado seleccionado?", "Advertencia", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                    {
                        ENEmpleados borrado = new ENEmpleados(int.Parse(labelID.Text), maskedTextBoxDNI.Text, textNombre.Text, textApellido1.Text, textApellido2.Text, maskedTextBoxTelefono.Text, textEmail.Text, textDireccion.Text, textPoblacion.Text, comboProvincia.Text, maskedTextBoxCodigo.Text, comboCargo.Text, textSueldo.Text, dateTimePickerFechaAlta.Value.Date, textLogin.Text, textPassword.Text);

                        borrado.BorrarEmpleado();

                        dgvEmpleados.DataSource = borrado.BuscarEmpleados();

                        LimpiarCampos();
                        toolStripLabel.Text = "Baja Realizada";

                        ficheros f = new ficheros();
                        f.EscribirLog(1, 1, maskedTextBoxDNI.Text.ToString());
                    }
                    else
                    {
                        toolStripLabel.Text = "Baja Cancelada";
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error al borrar Empleado.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
                }
            }
        }

        private void buttonImprimir_Click_1(object sender, EventArgs e)
        {
            frmImprimir Imprimir = new frmImprimir(dgvEmpleados, "EMPLEADOS");
            Imprimir.Show();
        }

        private void buttonXML_Click(object sender, EventArgs e)
        {
            ExportarXML();
        }

        private void buttonPDF_Click(object sender, EventArgs e)
        {
            PDF pdf = new PDF();
            pdf.generarPDF("frmEmpleados", saveFileDialog1, dgvEmpleados);
        }

        public void ExportarXML()
        {
            saveFileDialog1.FileName = "UACARS empleados.xml";
            saveFileDialog1.Filter = "Archivo XML|*.xml";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string path = saveFileDialog1.FileName;
                int numFilas = 0;

                numFilas = dgvEmpleados.Rows.Count;

                DataSet ds = new DataSet("Empleados");
                DataTable dt = new DataTable("Empleado");

                dt.Columns.Add("id", Type.GetType("System.String"));

                dt.Columns.Add("nif", Type.GetType("System.String"));

                dt.Columns.Add("nombre", Type.GetType("System.String"));

                dt.Columns.Add("apellido1", Type.GetType("System.String"));

                dt.Columns.Add("apellido2", Type.GetType("System.String"));

                dt.Columns.Add("telefono", Type.GetType("System.String"));

                dt.Columns.Add("email", Type.GetType("System.String"));

                dt.Columns.Add("direccion", Type.GetType("System.String"));

                dt.Columns.Add("localidad", Type.GetType("System.String"));

                dt.Columns.Add("provincia", Type.GetType("System.String"));

                dt.Columns.Add("cp", Type.GetType("System.String"));

                dt.Columns.Add("cargo", Type.GetType("System.String"));

                dt.Columns.Add("sueldo", Type.GetType("System.String"));

                dt.Columns.Add("fechaalta", Type.GetType("System.String"));

                dt.Columns.Add("login", Type.GetType("System.String"));

                dt.Columns.Add("password", Type.GetType("System.String"));

                if (numFilas > 0)
                {
                    for (int i = 0; i < numFilas; i++)
                    {
                        DataRow dr;
                        dr = dt.NewRow();

                        dr.BeginEdit();

                        dr["id"] = dgvEmpleados[0, i].Value.ToString();

                        dr["nif"] = dgvEmpleados[1, i].Value.ToString();

                        dr["nombre"] = dgvEmpleados[2, i].Value.ToString();

                        dr["apellido1"] = dgvEmpleados[3, i].Value.ToString();

                        dr["apellido2"] = dgvEmpleados[4, i].Value.ToString();

                        dr["telefono"] = dgvEmpleados[5, i].Value.ToString();

                        dr["email"] = dgvEmpleados[6, i].Value.ToString();

                        dr["direccion"] = dgvEmpleados[7, i].Value.ToString();

                        dr["localidad"] = dgvEmpleados[8, i].Value.ToString();

                        dr["provincia"] = dgvEmpleados[9, i].Value.ToString();

                        dr["cp"] = dgvEmpleados[10, i].Value.ToString();

                        dr["cargo"] = dgvEmpleados[11, i].Value.ToString();

                        dr["sueldo"] = dgvEmpleados[12, i].Value.ToString();

                        dr["fechaalta"] = dgvEmpleados[13, i].Value.ToString();

                        dr["login"] = dgvEmpleados[14, i].Value.ToString();

                        dr["password"] = dgvEmpleados[15, i].Value.ToString();

                        dr.EndEdit();

                        dt.Rows.Add(dr);
                    }
                }
                ds.Tables.Add(dt);
                ds.WriteXml(path);
            }
        }

        public void ImportarXML()
        {
            DataSet dataSet1 = new DataSet();
            openFileDialog1.FileName = "";
            openFileDialog1.Filter = "Archivo XML|*.xml";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string file = openFileDialog1.FileName;

                if (file.Length > 0)
                {
                    try
                    {
                        dataSet1.ReadXml(file);

                        DataGridView aux = new DataGridView();
                        dgvEmpleados.DataSource = aux.DataSource;
                        dgvEmpleados.DataMember = "";

                        dgvEmpleados.DataSource = dataSet1;
                        dgvEmpleados.DataMember = "empleado";

                        System.IO.StringWriter swXML = new System.IO.StringWriter();
                        dataSet1.WriteXmlSchema(swXML);
                    }

                    catch (System.Security.SecurityException ex)
                    {
                        MessageBox.Show("Error al acceder al fichero," + ex.Message, "Error de fichero", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    }
                }
            }
        }

        private void buttonExcel_Click(object sender, EventArgs e)
        {
            Excel();
        }

        public void Excel()
        {
            XML xml = new XML();
            xml.ExportarExcel(dgvEmpleados);
        }
    }
}
